﻿using AspectCore.DynamicProxy;
using AspectCore.Injector;
using RAP.Framework.Libary.DataSource.Model;
using System;
using System.Collections.Generic;
using System.Text;

namespace RAP.Framework.Libary.DataSource
{
    /// <summary>
    /// 
    /// </summary>
    public interface IDataModelGeneratorFactory : IDisposable
    {
        /// <summary>
        /// 
        /// </summary>
        /// <param name="configureService"></param>
        void Configure ( Action<IServiceContainer> configureService );

        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="args"></param>
        /// <returns></returns>
        T CreateProxyClass<T> ( params object[] args ) where T : class;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="type"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        IDataModel CreateProxyClass ( Type type, params object[] args );
    }
}
